home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 April: Mac OS SDK / Dev.CD Apr 00 SDK1.toast / Development Kits / Mac OS / GameSprocket SDKs / DrawSprocket_SDK / Interfaces&Libraries / DrawSprocket.h next >
Encoding:
C/C++ Source or Header  |  1999-10-29  |  12.9 KB  |  493 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        DrawSprocket.h
  3.  
  4.      Contains:    Games Sprockets: DrawSprocket interfaces
  5.  
  6.      Version:    Technology:    Draw Sprocket 1.7
  7.                  Release:    DrawSprocket SDK, Use with 3.2 Universal Headers
  8.  
  9.      Copyright:    © 1996-1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __DRAWSPROCKET__
  18. #define __DRAWSPROCKET__
  19.  
  20. #ifndef __MACTYPES__
  21. #include <MacTypes.h>
  22. #endif
  23.  
  24. #ifndef __EVENTS__
  25. #include <Events.h>
  26. #endif
  27.  
  28. #ifndef __QUICKDRAW__
  29. #include <Quickdraw.h>
  30. #endif
  31.  
  32. #ifndef __QDOFFSCREEN__
  33. #include <QDOffscreen.h>
  34. #endif
  35.  
  36. #ifndef __DISPLAYS__
  37. #include <Displays.h>
  38. #endif
  39.  
  40.  
  41.  
  42.  
  43. #if PRAGMA_ONCE
  44. #pragma once
  45. #endif
  46.  
  47. #ifdef __cplusplus
  48. extern "C" {
  49. #endif
  50.  
  51. #if PRAGMA_IMPORT
  52. #pragma import on
  53. #endif
  54.  
  55. #if PRAGMA_STRUCT_ALIGN
  56.     #pragma options align=power
  57. #elif PRAGMA_STRUCT_PACKPUSH
  58.     #pragma pack(push, 2)
  59. #elif PRAGMA_STRUCT_PACK
  60.     #pragma pack(2)
  61. #endif
  62.  
  63. #if PRAGMA_ENUM_ALWAYSINT
  64.     #pragma enumsalwaysint on
  65. #elif PRAGMA_ENUM_OPTIONS
  66.     #pragma option enum=int
  67. #elif PRAGMA_ENUM_PACK
  68.     #if __option(pack_enums)
  69.         #define PRAGMA_ENUM_PACK__DRAWSPROCKET__
  70.     #endif
  71.     #pragma options(!pack_enums)
  72. #endif
  73.  
  74. /*
  75. ********************************************************************************
  76. ** error/warning codes
  77. ********************************************************************************
  78. */
  79. enum {
  80.     kDSpNotInitializedErr        = -30440L,
  81.     kDSpSystemSWTooOldErr        = -30441L,
  82.     kDSpInvalidContextErr        = -30442L,
  83.     kDSpInvalidAttributesErr    = -30443L,
  84.     kDSpContextAlreadyReservedErr = -30444L,
  85.     kDSpContextNotReservedErr    = -30445L,
  86.     kDSpContextNotFoundErr        = -30446L,
  87.     kDSpFrameRateNotReadyErr    = -30447L,
  88.     kDSpConfirmSwitchWarning    = -30448L,
  89.     kDSpInternalErr                = -30449L,
  90.     kDSpStereoContextErr        = -30450L
  91. };
  92.  
  93. /*
  94. ********************************************************************************
  95. ** constants
  96. ********************************************************************************
  97. */
  98.  
  99. enum DSpDepthMask {
  100.     kDSpDepthMask_1                = 1 << 0,
  101.     kDSpDepthMask_2                = 1 << 1,
  102.     kDSpDepthMask_4                = 1 << 2,
  103.     kDSpDepthMask_8                = 1 << 3,
  104.     kDSpDepthMask_16            = 1 << 4,
  105.     kDSpDepthMask_32            = 1 << 5,
  106.     kDSpDepthMask_All            = -1L
  107. };
  108. typedef enum DSpDepthMask DSpDepthMask;
  109.  
  110.  
  111. enum DSpColorNeeds {
  112.     kDSpColorNeeds_DontCare        = 0L,
  113.     kDSpColorNeeds_Request        = 1L,
  114.     kDSpColorNeeds_Require        = 2L
  115. };
  116. typedef enum DSpColorNeeds DSpColorNeeds;
  117.  
  118.  
  119. enum DSpContextState {
  120.     kDSpContextState_Active        = 0L,
  121.     kDSpContextState_Paused        = 1L,
  122.     kDSpContextState_Inactive    = 2L
  123. };
  124. typedef enum DSpContextState DSpContextState;
  125.  
  126. /* kDSpContextOption_QD3DAccel not yet implemented */
  127.  
  128. enum DSpContextOption {
  129.                                                                 /*    kDSpContextOption_QD3DAccel        = 1<<0,*/
  130.     kDSpContextOption_PageFlip    = 1 << 1,
  131.     kDSpContextOption_DontSyncVBL = 1 << 2,
  132.     kDSpContextOption_Stereoscopic = 1 << 3
  133. };
  134. typedef enum DSpContextOption DSpContextOption;
  135.  
  136.  
  137. enum DSpAltBufferOption {
  138.     kDSpAltBufferOption_RowBytesEqualsWidth = 1 << 0
  139. };
  140. typedef enum DSpAltBufferOption DSpAltBufferOption;
  141.  
  142.  
  143. enum DSpBufferKind {
  144.     kDSpBufferKind_Normal        = 0
  145. };
  146. typedef enum DSpBufferKind DSpBufferKind;
  147.  
  148.  
  149. enum DSpBlitMode {
  150.     kDSpBlitMode_Plain            = 0,
  151.     kDSpBlitMode_SrcKey            = 1 << 0,
  152.     kDSpBlitMode_DstKey            = 1 << 1,
  153.     kDSpBlitMode_Interpolation    = 1 << 2
  154. };
  155. typedef enum DSpBlitMode DSpBlitMode;
  156.  
  157. /*
  158. ********************************************************************************
  159. ** data types
  160. ********************************************************************************
  161. */
  162. typedef struct OpaqueDSpAltBufferReference*  DSpAltBufferReference;
  163. typedef struct OpaqueDSpContextReference*  DSpContextReference;
  164. #define kDSpEveryContext ((DSpContextReference)NULL)
  165. typedef CALLBACK_API_C( Boolean , DSpEventProcPtr )(EventRecord *inEvent);
  166. typedef CALLBACK_API_C( Boolean , DSpCallbackProcPtr )(DSpContextReference inContext, void *inRefCon);
  167.  
  168. struct DSpContextAttributes {
  169.     Fixed                             frequency;
  170.     UInt32                             displayWidth;
  171.     UInt32                             displayHeight;
  172.     UInt32                             reserved1;
  173.     UInt32                             reserved2;
  174.     UInt32                             colorNeeds;
  175.     CTabHandle                         colorTable;
  176.     OptionBits                         contextOptions;
  177.     OptionBits                         backBufferDepthMask;
  178.     OptionBits                         displayDepthMask;
  179.     UInt32                             backBufferBestDepth;
  180.     UInt32                             displayBestDepth;
  181.     UInt32                             pageCount;
  182.     char                             filler[3];
  183.     Boolean                         gameMustConfirmSwitch;
  184.     UInt32                             reserved3[4];
  185. };
  186. typedef struct DSpContextAttributes        DSpContextAttributes;
  187. typedef DSpContextAttributes *            DSpContextAttributesPtr;
  188.  
  189. struct DSpAltBufferAttributes {
  190.     UInt32                             width;
  191.     UInt32                             height;
  192.     DSpAltBufferOption                 options;
  193.     UInt32                             reserved[4];
  194. };
  195. typedef struct DSpAltBufferAttributes    DSpAltBufferAttributes;
  196. typedef struct DSpBlitInfo                 DSpBlitInfo;
  197. typedef CALLBACK_API_C( void , DSpBlitDoneProc )(DSpBlitInfo *info);
  198.  
  199. struct DSpBlitInfo {
  200.     Boolean                         completionFlag;
  201.     char                             filler[3];
  202.     DSpBlitDoneProc                 completionProc;
  203.     DSpContextReference             srcContext;
  204.     CGrafPtr                         srcBuffer;
  205.     Rect                             srcRect;
  206.     UInt32                             srcKey;
  207.  
  208.     DSpContextReference             dstContext;
  209.     CGrafPtr                         dstBuffer;
  210.     Rect                             dstRect;
  211.     UInt32                             dstKey;
  212.  
  213.     DSpBlitMode                     mode;
  214.     UInt32                             reserved[4];
  215. };
  216.  
  217.  
  218. typedef DSpBlitInfo *                    DSpBlitInfoPtr;
  219. /*
  220. ********************************************************************************
  221. ** function prototypes
  222. ********************************************************************************
  223. */
  224. /*
  225. ** global operations
  226. */
  227. EXTERN_API_C( OSStatus )
  228. DSpStartup                        (void);
  229.  
  230. EXTERN_API_C( OSStatus )
  231. DSpShutdown                        (void);
  232.  
  233. EXTERN_API_C( NumVersion )
  234. DSpGetVersion                    (void);
  235.  
  236. EXTERN_API_C( OSStatus )
  237. DSpGetFirstContext                (DisplayIDType             inDisplayID,
  238.                                  DSpContextReference *    outContext);
  239.  
  240. EXTERN_API_C( OSStatus )
  241. DSpGetNextContext                (DSpContextReference     inCurrentContext,
  242.                                  DSpContextReference *    outContext);
  243.  
  244. EXTERN_API_C( OSStatus )
  245. DSpGetCurrentContext            (DisplayIDType             inDisplayID,
  246.                                  DSpContextReference *    outContext);
  247.  
  248. EXTERN_API_C( OSStatus )
  249. DSpFindBestContext                (DSpContextAttributesPtr  inDesiredAttributes,
  250.                                  DSpContextReference *    outContext);
  251.  
  252. EXTERN_API_C( OSStatus )
  253. DSpFindBestContextOnDisplayID    (DSpContextAttributesPtr  inDesiredAttributes,
  254.                                  DSpContextReference *    outContext,
  255.                                  DisplayIDType             inDisplayID);
  256.  
  257. EXTERN_API_C( OSStatus )
  258. DSpCanUserSelectContext            (DSpContextAttributesPtr  inDesiredAttributes,
  259.                                  Boolean *                outUserCanSelectContext);
  260.  
  261. EXTERN_API_C( OSStatus )
  262. DSpUserSelectContext            (DSpContextAttributesPtr  inDesiredAttributes,
  263.                                  DisplayIDType             inDialogDisplayLocation,
  264.                                  DSpEventProcPtr         inEventProc,
  265.                                  DSpContextReference *    outContext);
  266.  
  267. EXTERN_API_C( OSStatus )
  268. DSpProcessEvent                    (EventRecord *            inEvent,
  269.                                  Boolean *                outEventWasProcessed);
  270.  
  271. EXTERN_API_C( OSStatus )
  272. DSpSetBlankingColor                (const RGBColor *        inRGBColor);
  273.  
  274. EXTERN_API_C( OSStatus )
  275. DSpSetDebugMode                    (Boolean                 inDebugMode);
  276.  
  277. EXTERN_API_C( OSStatus )
  278. DSpFindContextFromPoint            (Point                     inGlobalPoint,
  279.                                  DSpContextReference *    outContext);
  280.  
  281. EXTERN_API_C( OSStatus )
  282. DSpGetMouse                        (Point *                outGlobalPoint);
  283.  
  284. /*
  285. ** alternate buffer operations
  286. */
  287. EXTERN_API_C( OSStatus )
  288. DSpAltBuffer_New                (DSpContextReference     inContext,
  289.                                  Boolean                 inVRAMBuffer,
  290.                                  DSpAltBufferAttributes * inAttributes,
  291.                                  DSpAltBufferReference * outAltBuffer);
  292.  
  293. EXTERN_API_C( OSStatus )
  294. DSpAltBuffer_Dispose            (DSpAltBufferReference     inAltBuffer);
  295.  
  296. EXTERN_API_C( OSStatus )
  297. DSpAltBuffer_InvalRect            (DSpAltBufferReference     inAltBuffer,
  298.                                  const Rect *            inInvalidRect);
  299.  
  300. EXTERN_API_C( OSStatus )
  301. DSpAltBuffer_GetCGrafPtr        (DSpAltBufferReference     inAltBuffer,
  302.                                  DSpBufferKind             inBufferKind,
  303.                                  CGrafPtr *                outCGrafPtr,
  304.                                  GDHandle *                outGDevice);
  305.  
  306. /*
  307. ** context operations
  308. */
  309. /* general */
  310. EXTERN_API_C( OSStatus )
  311. DSpContext_GetAttributes        (DSpContextReference     inContext,
  312.                                  DSpContextAttributesPtr  outAttributes);
  313.  
  314. EXTERN_API_C( OSStatus )
  315. DSpContext_Reserve                (DSpContextReference     inContext,
  316.                                  DSpContextAttributesPtr  inDesiredAttributes);
  317.  
  318. EXTERN_API_C( OSStatus )
  319. DSpContext_Queue                (DSpContextReference     inParentContext,
  320.                                  DSpContextReference     inChildContext,
  321.                                  DSpContextAttributesPtr  inDesiredAttributes);
  322.  
  323. EXTERN_API_C( OSStatus )
  324. DSpContext_Switch                (DSpContextReference     inOldContext,
  325.                                  DSpContextReference     inNewContext);
  326.  
  327. EXTERN_API_C( OSStatus )
  328. DSpContext_Release                (DSpContextReference     inContext);
  329.  
  330. EXTERN_API_C( OSStatus )
  331. DSpContext_GetDisplayID            (DSpContextReference     inContext,
  332.                                  DisplayIDType *        outDisplayID);
  333.  
  334. EXTERN_API_C( OSStatus )
  335. DSpContext_GlobalToLocal        (DSpContextReference     inContext,
  336.                                  Point *                ioPoint);
  337.  
  338. EXTERN_API_C( OSStatus )
  339. DSpContext_LocalToGlobal        (DSpContextReference     inContext,
  340.                                  Point *                ioPoint);
  341.  
  342. EXTERN_API_C( OSStatus )
  343. DSpContext_SetVBLProc            (DSpContextReference     inContext,
  344.                                  DSpCallbackProcPtr     inProcPtr,
  345.                                  void *                    inRefCon);
  346.  
  347. EXTERN_API_C( OSStatus )
  348. DSpContext_GetFlattenedSize        (DSpContextReference     inContext,
  349.                                  UInt32 *                outFlatContextSize);
  350.  
  351. EXTERN_API_C( OSStatus )
  352. DSpContext_Flatten                (DSpContextReference     inContext,
  353.                                  void *                    outFlatContext);
  354.  
  355. EXTERN_API_C( OSStatus )
  356. DSpContext_Restore                (void *                    inFlatContext,
  357.                                  DSpContextReference *    outRestoredContext);
  358.  
  359. EXTERN_API_C( OSStatus )
  360. DSpContext_GetMonitorFrequency    (DSpContextReference     inContext,
  361.                                  Fixed *                outFrequency);
  362.  
  363. EXTERN_API_C( OSStatus )
  364. DSpContext_SetMaxFrameRate        (DSpContextReference     inContext,
  365.                                  UInt32                 inMaxFPS);
  366.  
  367. EXTERN_API_C( OSStatus )
  368. DSpContext_GetMaxFrameRate        (DSpContextReference     inContext,
  369.                                  UInt32 *                outMaxFPS);
  370.  
  371. EXTERN_API_C( OSStatus )
  372. DSpContext_SetState                (DSpContextReference     inContext,
  373.                                  DSpContextState         inState);
  374.  
  375. EXTERN_API_C( OSStatus )
  376. DSpContext_GetState                (DSpContextReference     inContext,
  377.                                  DSpContextState *        outState);
  378.  
  379. EXTERN_API_C( OSStatus )
  380. DSpContext_IsBusy                (DSpContextReference     inContext,
  381.                                  Boolean *                outBusyFlag);
  382.  
  383. /* dirty rectangles */
  384. EXTERN_API_C( OSStatus )
  385. DSpContext_SetDirtyRectGridSize    (DSpContextReference     inContext,
  386.                                  UInt32                 inCellPixelWidth,
  387.                                  UInt32                 inCellPixelHeight);
  388.  
  389. EXTERN_API_C( OSStatus )
  390. DSpContext_GetDirtyRectGridSize    (DSpContextReference     inContext,
  391.                                  UInt32 *                outCellPixelWidth,
  392.                                  UInt32 *                outCellPixelHeight);
  393.  
  394. EXTERN_API_C( OSStatus )
  395. DSpContext_GetDirtyRectGridUnits (DSpContextReference     inContext,
  396.                                  UInt32 *                outCellPixelWidth,
  397.                                  UInt32 *                outCellPixelHeight);
  398.  
  399. EXTERN_API_C( OSStatus )
  400. DSpContext_InvalBackBufferRect    (DSpContextReference     inContext,
  401.                                  const Rect *            inRect);
  402.  
  403. /* underlays */
  404. EXTERN_API_C( OSStatus )
  405. DSpContext_SetUnderlayAltBuffer    (DSpContextReference     inContext,
  406.                                  DSpAltBufferReference     inNewUnderlay);
  407.  
  408. EXTERN_API_C( OSStatus )
  409. DSpContext_GetUnderlayAltBuffer    (DSpContextReference     inContext,
  410.                                  DSpAltBufferReference * outUnderlay);
  411.  
  412. /* gamma */
  413. EXTERN_API_C( OSStatus )
  414. DSpContext_FadeGammaOut            (DSpContextReference     inContext,
  415.                                  RGBColor *                inZeroIntensityColor);
  416.  
  417. EXTERN_API_C( OSStatus )
  418. DSpContext_FadeGammaIn            (DSpContextReference     inContext,
  419.                                  RGBColor *                inZeroIntensityColor);
  420.  
  421. EXTERN_API_C( OSStatus )
  422. DSpContext_FadeGamma            (DSpContextReference     inContext,
  423.                                  SInt32                 inPercentOfOriginalIntensity,
  424.                                  RGBColor *                inZeroIntensityColor);
  425.  
  426. /* buffering */
  427. EXTERN_API_C( OSStatus )
  428. DSpContext_SwapBuffers            (DSpContextReference     inContext,
  429.                                  DSpCallbackProcPtr     inBusyProc,
  430.                                  void *                    inUserRefCon);
  431.  
  432. EXTERN_API_C( OSStatus )
  433. DSpContext_GetBackBuffer        (DSpContextReference     inContext,
  434.                                  DSpBufferKind             inBufferKind,
  435.                                  CGrafPtr *                outBackBuffer);
  436.  
  437. EXTERN_API_C( OSStatus )
  438. DSpContext_GetFrontBuffer        (DSpContextReference     inContext,
  439.                                  CGrafPtr *                outFrontBuffer);
  440.  
  441. /* clut operations */
  442. EXTERN_API_C( OSStatus )
  443. DSpContext_SetCLUTEntries        (DSpContextReference     inContext,
  444.                                  const ColorSpec *        inEntries,
  445.                                  UInt16                 inStartingEntry,
  446.                                  UInt16                 inLastEntry);
  447.  
  448. EXTERN_API_C( OSStatus )
  449. DSpContext_GetCLUTEntries        (DSpContextReference     inContext,
  450.                                  ColorSpec *            outEntries,
  451.                                  UInt16                 inStartingEntry,
  452.                                  UInt16                 inLastEntry);
  453.  
  454. /* blit operations */
  455. EXTERN_API_C( OSStatus )
  456. DSpBlit_Faster                    (DSpBlitInfoPtr         inBlitInfo,
  457.                                  Boolean                 inAsyncFlag);
  458.  
  459. EXTERN_API_C( OSStatus )
  460. DSpBlit_Fastest                    (DSpBlitInfoPtr         inBlitInfo,
  461.                                  Boolean                 inAsyncFlag);
  462.  
  463.  
  464.  
  465. #if PRAGMA_ENUM_ALWAYSINT
  466.     #pragma enumsalwaysint reset
  467. #elif PRAGMA_ENUM_OPTIONS
  468.     #pragma option enum=reset
  469. #elif defined(PRAGMA_ENUM_PACK__DRAWSPROCKET__)
  470.     #pragma options(pack_enums)
  471. #endif
  472.  
  473. #if PRAGMA_STRUCT_ALIGN
  474.     #pragma options align=reset
  475. #elif PRAGMA_STRUCT_PACKPUSH
  476.     #pragma pack(pop)
  477. #elif PRAGMA_STRUCT_PACK
  478.     #pragma pack()
  479. #endif
  480.  
  481. #ifdef PRAGMA_IMPORT_OFF
  482. #pragma import off
  483. #elif PRAGMA_IMPORT
  484. #pragma import reset
  485. #endif
  486.  
  487. #ifdef __cplusplus
  488. }
  489. #endif
  490.  
  491. #endif /* __DRAWSPROCKET__ */
  492.  
  493.